前言
接下來的幾天,我將學習一些中階的指令,主要圍繞在能夠有效處理輸出及輸入數據的指令,相信這對之後對操作和管理數據流應該還蠻有幫助的。
stdout-標準輸出
指將程序的輸出傳送到終端或者是文件,可以透過一些導向來操縱輸出的目的地,如:
echo Hello world > text.txt
這指令會在該目錄中的text.txt檔中 echo 出 Hello world 的字串,而其中 > 是輸出導向的字元
stdin- 標準輸入
現在我們知道我們可以透過鍵盤當作輸入,而使用 < 標準輸入字元我們也可以透過文件的內容作輸出。以剛剛的text.txt為例:
cat < text.txt > text2.txt
此時,text2.txt 中將會有從text.txt 檔中的 Hello world 字串
stderr-標準錯誤
當我們輸入以下指令:
ls /fake/directory > test
我們會得到:
ls: cannot access /fake/directory: No such file or directory
並且在 test 中會顯示空白,這是因為在linux中有還有另一個 I/O 流叫做 stderr。在linux中,stdin、stdout、stderr 的文件描述符分別為 0、1、2,而透過他們可以更精確的操縱數據流的流向。因此解決上面的問題必須用以下指令:
ls /fake/directory 2> test
test檔中才會出現以上的error,而想要使標準輸出及標準錯誤一起定向,可以在2>後面加上&1
ls /fake/directory 2>&1 test